
using System;

namespace SpotifyGenNHibernate.EN.Spotify
{
        public class CancionBibliotecaEN
        {
        /**
         *
         */

        private int id;

        /**
         *
         */

        private bool escuchada;

        /**
         *
         */

        private bool local;

        /**
         *
         */

        private bool comprada;

        /**
         *
         */

        private int valoracion;

        /**
         *
         */

        private Spotify.CancionEN cancion;

        /**
         *
         */

        private Spotify.UsuarioEN usuario;





        public virtual int Id { get { return id; } set { id = value;  } }


        public virtual bool Escuchada { get { return escuchada; } set { escuchada = value;  } }


        public virtual bool Local { get { return local; } set { local = value;  } }


        public virtual bool Comprada { get { return comprada; } set { comprada = value;  } }


        public virtual int Valoracion { get { return valoracion; } set { valoracion = value;  } }


        public virtual Spotify.CancionEN Cancion { get { return cancion; } set { cancion = value;  } }


        public virtual Spotify.UsuarioEN Usuario { get { return usuario; } set { usuario = value;  } }



        public CancionBibliotecaEN()
        {
        }



        public CancionBibliotecaEN(int id, bool escuchada, bool local, bool comprada, int valoracion, Spotify.CancionEN cancion, Spotify.UsuarioEN usuario)
        {
                this.init (id, escuchada, local, comprada, valoracion, cancion, usuario);
        }


        public CancionBibliotecaEN(CancionBibliotecaEN cancionBiblioteca)
        {
                this.init (cancionBiblioteca.Id, cancionBiblioteca.Escuchada, cancionBiblioteca.Local, cancionBiblioteca.Comprada, cancionBiblioteca.Valoracion, cancionBiblioteca.Cancion, cancionBiblioteca.Usuario);
        }

        private void init (int id, bool escuchada, bool local, bool comprada, int valoracion, Spotify.CancionEN cancion, Spotify.UsuarioEN usuario)
        {
                this.Id = id;


                this.Escuchada = escuchada;

                this.Local = local;

                this.Comprada = comprada;

                this.Valoracion = valoracion;

                this.Cancion = cancion;

                this.Usuario = usuario;
        }

        public override bool Equals (object obj)
        {
                if (obj == null)
                        return false;
                CancionBibliotecaEN t = obj as CancionBibliotecaEN;
                if (t == null)
                        return false;
                if (Id.Equals (t.Id))
                        return true;
                else
                        return false;
        }

        public override int GetHashCode ()
        {
                int hash = 13;

                hash += (null == Id ? 0 : this.Id.GetHashCode ());
                return hash;
        }
        }
}
